package com.sxj.corejava.code01_基础;

import java.util.Scanner;

/**
 * @author 石小俊
 * @date 2024年02月29日 20:49
 * 在控制台输入两个int类型的数字, 分别赋值给两个变量
 * 通过一定的方式, 将这两个变量的值进行交换
 * 使用两种方式进行实现
 * 1.交换过程中可以存在第三个变量
 * 2.交换过程中不能存在第三个变量
 */
public class Test08_练习 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入第一个数字:");
        int a = sc.nextInt();
        System.out.print("请输入第二个数字:");
        int b = sc.nextInt();
        System.out.println("****************交换前的值****************");
        System.out.println("a = " + a + ",b = " + b);

        System.out.println("****************第一次交换****************");
        // 1.交换过程中可以存在第三个变量
        int temp = a;
        a = b;
        b = temp;
        System.out.println("a = " + a + ",b = " + b);

        System.out.println("****************第二次交换****************");
        // 2.交换过程中不能存在第三个变量
        // 此时可以将其中一个变量的值赋值为两个变量之后
        a = a + b;
        // 这时候根据变量之和与任意一个变量的值可以获取到另一个变量的值
        // 想要将原来的a的值赋值给b
        // 此时两个变量的值分别为两数之和、原来的b的值
        // 因此,原来的a的值=两数之和-原来的b的值
        b = a - b;
        // 此时a=两数之和,b=原来的a的值
        // 将原来的b的值赋值给a
        a = a - b;
        System.out.println("a = " + a + ",b = " + b);
    }
}
